Cloud computing may be referred to as a service that provides various information technology (IT) resources distributed over the Internet. The most common cloud computing service models may include Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). The IaaS may provide hardware infrastructure as a service. The PaaS may provide application development and execution platform as a service. The SaaS may provide applications as a service.
The IaaS may further include many sub_service categories. Mainly, the IaaS may include a storage service and a computing service, which provide computing resources in a form of a virtual machine. Such a storage service may be provided by a distributed storage system. The distributed storage system may virtually create a storage pool using low-profiled hardware distributed over a network. Such a distributed storage system may dynamically and flexibly provide a shared storage space to users according to abruptly varying service demands. The distributed storage system may commonly employ an object-based storage scheme. The object-based storage scheme may be a typical cloud storage service scheme. The object-based storage scheme may allow each physical storage device to manage own storage spaces. The object-based storage scheme may improve overall performance of the distributed storage system and allow the distributed storage system to easily expand storage capability. Furthermore, data may be safely shared independently from related platforms.
The typical distributed storage system may include a plurality of object-based storages. The typical distributed storage system may replicate data and store replicated data in at least one object-based storage for data safety and high data availability. The replicated data may be referred to as a replica. The distributed storage system may generally have two or three replicas, but may have more than three replicas, depending on importance of a respective object. The distributed storage system may be required to synchronize the replicas of a respective object. Such synchronization may be processed by an independent replication server (not shown).
The typical distributed storage system may store and replicate objects regardless of physical locations of a client and a data node. As a result, a client might upload and download objects a data node separated from the client at a long distance. In this case, it causes a great delay for processing respective objects. For example, it may take a comparatively longer time to input and/or output the respective objects.
In addition, since the locations of clients and data nodes are not considered, a client may store an object and replicas thereof at a plurality of data nodes gathered in one specific zone. When a respective network of the specific zone fails, the data nodes in the specific zone may malfunction. In this case, clients may not use objects stored in the data nodes located in the specific zone. Therefore, there is a need for developing a method for selecting data nodes based on locations of a client and the data nodes and storing a target object and replicas thereof distributively in the selected data nodes.